package huawei;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 雨花石 动态规划
 */
public class Solution119Import {

        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);

            // 读取输入
            int n = scanner.nextInt();
            int[] weights = new int[n];
            int totalWeight = 0;

            for (int i = 0; i < n; i++) {
                weights[i] = scanner.nextInt();
                totalWeight += weights[i];
            }

            // 如果总重量是奇数，无法平分
            if (totalWeight % 2 != 0) {
                System.out.println(-1);
                return;
            }

            int target = totalWeight / 2;

            // dp[i] 表示凑出重量 i 所需的最少雨花石数量
            int[] dp = new int[target + 1];
            Arrays.fill(dp, Integer.MAX_VALUE);
            dp[0] = 0; // 凑出重量 0 需要 0 块雨花石

            // 遍历每个雨花石重量
            for (Integer wt : weights) {
                for (int i = target; i >= wt; i--) {
                    if (dp[i - wt] != Integer.MAX_VALUE) {
                        dp[i] = Math.min(dp[i], dp[i - wt] + 1);
                    }
                }
            }



            // 如果 dp[target] 仍然是 Integer.MAX_VALUE，说明无法平分
            if (dp[target] == Integer.MAX_VALUE) {
                System.out.println(-1);
            } else {
                System.out.println(dp[target]); // 输出最少需要的雨花石数量
            }

            scanner.close();
        }

}
